package com.javarush.test.level18.lesson10.bonus02;

/* Прайсы
CrUD для таблицы внутри файла
Считать с консоли имя файла для операций CrUD
Программа запускается со следующим набором параметров:
-c productName price quantity
Значения параметров:
где id - 8 символов
productName - название товара, 30 chars (60 bytes)
price - цена, 8 символов
quantity - количество, 4 символа
-c  - добавляет товар с заданными параметрами в конец файла, генерирует id самостоятельно, инкрементируя максимальный id

В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
id productName price quantity
Данные дополнены пробелами до их длины

Пример:
19846   Шорты пляжные синие           159.00  12
198478  Шорты пляжные черные с рисунко173.00  17
19847983Куртка для сноубордистов, разм10173.991234
*/

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Solution {
    public static void main(String[] args) throws Exception {
        BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
        String file=reader.readLine();
        BufferedReader fileReader=new BufferedReader(new FileReader(file));
        List<Integer> n=new ArrayList<Integer>();
        String s="";
        int newKey=1;
        while((s = fileReader.readLine()) != null)
        {
            String num="";
            char[] ch=s.toCharArray();
            if (ch.length>8)
            {
                for (int i=0; i<8;i++) {
                    if (String.valueOf(ch[i]).equals(" "))
                        continue;
                    num = num + ch[i];
                }
            }
            try{
                n.add(Integer.parseInt(num));
            }
            catch (NumberFormatException e)
            {
                continue;
            }


        }

        Collections.sort(n);

        fileReader.close();
        if (!n.isEmpty())
            newKey=n.get(n.size()-1)+1;
        else newKey=1;
        String write="";
        if (newKey>99999999) return;


        if (args[0].equals("-c"))
        {

            int leng;
            write=write+newKey;
            if((leng=String.valueOf(newKey).length())<8)
            {
                for (int i=leng; i<8;i++)
                {
                    write=write+" ";
                }
            }

            String name="";
            for (int i=1;i<args.length-2;i++)
            {
                if (i==args.length-3)
                {
                    name=name+args[i];
                    continue;
                }
                name=name+args[i]+" ";
            }
            if (name.length()>30) return;

            write=write+name;
            if((leng=name.length())<30)
            {
               for (int i=leng; i<30;i++)
               {
                   write=write+" ";
               }
            }

            if (args[args.length-2].length()>8) return;
            write=write+args[args.length-2];
            if((leng=args[args.length-2].length())<8)
            {
                for (int i=leng; i<8;i++)
                {
                    write=write+" ";
                }
            }

            if (args[args.length-1].length()>4) return;
            write=write+args[args.length-1];
            if((leng=args[args.length-1].length())<4)
            {
                for (int i=leng; i<4;i++)
                {
                    write=write+" ";
                }

            }

        }
        else return;


        FileInputStream f1=new FileInputStream(file);
        byte[] c=new byte[f1.available()];
        f1.read(c);
        f1.close();
        FileOutputStream w=new FileOutputStream(file);
        w.write(c);
        w.write(10);
        w.write(write.getBytes());
        w.close();




        reader.close();



    }
}
